//
//  YYLrcView.m
//  音乐播放器
//
//  Created by zpy on 15/11/29.
//  Copyright © 2015年 zpy. All rights reserved.
//

#import "YYLrcView.h"
#import "UIView+AdjustFrame.h"
#import "YYLrcCell.h"
#import "YYLrcLine.h"
@interface YYLrcView ()<UITableViewDelegate,UITableViewDataSource>

@property(nonatomic,weak) UITableView *tableview;

@property(nonatomic,strong) NSArray *lrcLines;

@property(nonatomic,assign) NSInteger currentIndex;
@end
@implementation YYLrcView
//-(instancetype)initWithCoder:(NSCoder *)aDecoder{
//
//    if ([super initWithCoder:aDecoder]) {
//        [self setupTableview];
//    }
//    return self;
//}
-(void)awakeFromNib{
    [super awakeFromNib];
    [self setupTableview];
}
-(void)setupTableview {
    UITableView *tableView = [[UITableView alloc] init];
    tableView.frame = self.bounds;
    tableView.backgroundColor = [UIColor clearColor];
    tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    tableView.delegate = self;
    tableView.dataSource = self;
    //    tableView.allowsSelection = NO;
    
    NSLog(@"%@", NSStringFromCGRect(self.bounds));
    
    [self addSubview:tableView];
    self.tableview = tableView;
    
    self.currentIndex = -1;
//    UITableView *tableview = [[UITableView alloc] init];
//    tableview.frame = self.bounds;
//    
//    
//    tableview.delegate = self;
//    tableview.dataSource = self;
//
//    [self addSubview:tableview];
//    self.tableview = tableview;
//    
//    self.currentIndex = -1;
}
-(void)layoutSubviews {
    [super layoutSubviews];
    
    self.tableview.frame = self.bounds;
    
    //
    self.tableview.contentInset = UIEdgeInsetsMake(self.tableview.height * 0.5, 0, self.tableview.height * 0.5, 0);
    
    NSLog(@"layoutSubviews");
    NSLog(@"%@", NSStringFromCGRect(self.bounds));
}
#pragma mark tableview的数据源方法
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    NSLog(@"%lu", (unsigned long)self.lrcLines.count);
    return self.lrcLines.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// 创建cell
    YYLrcCell *lrcCell = [YYLrcCell lrcCellWithTableView:tableView];
    lrcCell.lrcLine = self.lrcLines[indexPath.row];
    
    // 让显示的歌词字体变大
    if (indexPath.row == self.currentIndex) {
        lrcCell.textLabel.font = [UIFont boldSystemFontOfSize:18.0];
    } else {
        lrcCell.textLabel.font = [UIFont systemFontOfSize:14.0];
    }
    
    return lrcCell;
}
// 重新lrcName 的set方法
-(void) setLrcName:(NSString *)lrcName{
// 保存歌词的文件名称
    _lrcName = lrcName;
    // 加载对应的歌词
    NSString *path = [[NSBundle mainBundle] pathForResource:lrcName ofType:nil];
    NSString *lrcString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
// 解析歌词
    /*
     [ti:瓦解]
     [ar:南拳妈妈]
     [al:南拳妈妈的夏天]
     
     [00:00.01]瓦解
     [00:02.74]作词：弹头（宋健彰） 作曲：周杰伦
     [00:06.09]演唱：南拳妈妈
     [00:09.06]
     [00:15.46]说着笑着的午后
     
     */
    // 1 分隔字符串
    NSArray *lrcLineStrs = [lrcString componentsSeparatedByString:@"\n"];
    NSMutableArray *tempArray = [NSMutableArray array];
    for (NSString *lrcLineStr in lrcLineStrs) {
        // 去掉不需要显示的行
        if ([lrcLineStr hasPrefix:@"[ti"] || [lrcLineStr hasPrefix:@"[ar"] || [lrcLineStr hasPrefix:@"[al"] || ![lrcLineStr hasPrefix:@"["]) {
            // 结束当前循环,开启下一次循环
            continue;
        }
        // 截取每一行歌词字符串
        NSArray *lrcEveryLine = [lrcLineStr componentsSeparatedByString:@"]"];
        YYLrcLine *lrcLine = [[YYLrcLine alloc] init];
        lrcLine.text = [lrcEveryLine lastObject];
        lrcLine.time = [[lrcEveryLine firstObject] substringFromIndex:1];
        // 将模型对象添加到可变数组中
        [tempArray addObject:lrcLine];
    }
    self.lrcLines = tempArray;
// 刷新数据
    [self.tableview reloadData];
    
}
- (void)setCurrentTime:(NSTimeInterval)currentTime {
    
    if (_currentTime > currentTime) {
        self.currentIndex = -1;
    }
    // 1.保持当前的时间
    _currentTime = currentTime;
    
    // 2.将传入的时间转换成字符串
    NSInteger minute = currentTime / 60;
    NSInteger second = (NSInteger)currentTime % 60;
    NSInteger millisecond = (currentTime - (NSInteger)currentTime) * 100;
    NSString *currentTimeStr = [NSString stringWithFormat:@"%02ld:%02ld.%02ld", minute, second, millisecond];
    
    // 3.对比时间
    NSInteger count = self.lrcLines.count;
    for (NSInteger i = self.currentIndex + 1; i < count; i++) {
        // 1.取出当前的歌词模型
        YYLrcLine *lrcLine = self.lrcLines[i];
        
        // 2.去除下一个歌词模型
        NSInteger nextIndex = i + 1;
        if (nextIndex < count) {
            YYLrcLine *nextLrcLine = self.lrcLines[nextIndex];
            
            // 3.比较时间
            if ([currentTimeStr compare:lrcLine.time] != NSOrderedAscending && [currentTimeStr compare:nextLrcLine.time] != NSOrderedDescending && self.currentIndex != i) {
                
                NSIndexPath *currentIndexPath = [NSIndexPath indexPathForRow:self.currentIndex inSection:0];
                NSIndexPath *nextIndexPath = [NSIndexPath indexPathForRow:i inSection:0];
                self.currentIndex = i;
                
                [self.tableview reloadRowsAtIndexPaths:@[currentIndexPath, nextIndexPath] withRowAnimation:UITableViewRowAnimationNone];
                [self.tableview scrollToRowAtIndexPath:nextIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
                
                NSLog(@"%@---%@---%@", currentTimeStr, lrcLine.time, nextLrcLine.time);
            }
        }
    }
}
@end
